home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 1 / CU Amiga Magazine CD-ROM Special Edition (1995)(EMAP Images)(GB)[Issue 1995-11].iso / Aminet / comm / tcp / AmiTCPsdk_40.lha / AmiTCP-4.0 / netinclude / sys / ioctl.h < prev    next >
C/C++ Source or Header  |  1994-10-05  |  4KB  |  88 lines

  1. #ifndef    SYS_IOCTL_H
  2. #define    SYS_IOCTL_H \
  3.        "$Id: ioctl.h,v 4.1 1994/10/05 23:16:17 ppessi Exp $"
  4. /*
  5.  *    SocketIoctl codes
  6.  *
  7.  *      Copyright © 1994 AmiTCP/IP Group,
  8.  *                       Network Solutions Development, Inc.
  9.  *                       All rights reserved.
  10.  */
  11.  
  12. /*
  13.  * Ioctl's have the command encoded in the lower word, and the size of
  14.  * any in or out parameters in the upper word.  The high 3 bits of the
  15.  * upper word are used to encode the in/out status of the parameter.
  16.  */
  17.  
  18. #define    IOCPARM_MASK    0x1fff        /* parameter length, at most 13 bits */
  19. #define    IOCPARM_LEN(x)    (((x) >> 16) & IOCPARM_MASK)
  20. #define    IOCBASECMD(x)    ((x) & ~IOCPARM_MASK)
  21. #define    IOCGROUP(x)    (((x) >> 8) & 0xff)
  22.  
  23. #define    IOCPARM_MAX    4096                        /* max size of ioctl */
  24. #define    IOC_VOID    0x20000000                        /* no parameters */
  25. #define    IOC_OUT        0x40000000                  /* copy out parameters */
  26. #define    IOC_IN        0x80000000                   /* copy in parameters */
  27. #define    IOC_INOUT    (IOC_IN|IOC_OUT)
  28. #define    IOC_DIRMASK    0xe0000000                 /* mask for IN/OUT/VOID */
  29.  
  30. #define _IOC(inout,group,num,len) \
  31.     (inout | ((len & IOCPARM_MASK) << 16) | ((group) << 8) | (num))
  32. #define    _IO(g,n)    _IOC(IOC_VOID,    (g), (n), 0)
  33. #define    _IOR(g,n,t)    _IOC(IOC_OUT,    (g), (n), sizeof(t))
  34. #define    _IOW(g,n,t)    _IOC(IOC_IN,    (g), (n), sizeof(t))
  35. /* this should be _IORW, but stdio got there first */
  36. #define    _IOWR(g,n,t)    _IOC(IOC_INOUT,    (g), (n), sizeof(t))
  37.  
  38. /* 
  39.  * File I/O controls
  40.  */
  41. #define    FIOCLEX        _IO('f', 1)              /* set close on exec on fd */
  42. #define    FIONCLEX    _IO('f', 2)                 /* remove close on exec */
  43. #define    FIONREAD    _IOR('f', 127, long)          /* get # bytes to read */
  44. #define    FIONBIO        _IOW('f', 126, long)   /* set/clear non-blocking i/o */
  45. #define    FIOASYNC    _IOW('f', 125, long)          /* set/clear async i/o */
  46. #define    FIOSETOWN    _IOW('f', 124, long)    /* set owner (struct Task *) */
  47. #define    FIOGETOWN    _IOR('f', 123, long)    /* get owner (struct Task *) */
  48.  
  49. /* 
  50.  * Socket I/O controls
  51.  *
  52.  * SIOCSPGRP and SIOCGPGRP are identical to the FIOSETOWN and FIOGETOWN,
  53.  * respectively.
  54.  */
  55. #define    SIOCATMARK    _IOR('s',  7, long)                  /* at oob mark? */
  56. #define    SIOCSPGRP    _IOW('s',  8, long)             /* set process group */
  57. #define    SIOCGPGRP    _IOR('s',  9, long)             /* get process group */
  58.  
  59. #define    SIOCADDRT    _IOW('r', 10, struct ortentry)          /* add route */
  60. #define    SIOCDELRT    _IOW('r', 11, struct ortentry)       /* delete route */
  61.  
  62. #define    SIOCSIFADDR    _IOW ('i',12, struct ifreq)     /* set ifnet address */
  63. #define    SIOCGIFADDR    _IOWR('i',33, struct ifreq)     /* get ifnet address */
  64. #define    SIOCSIFDSTADDR    _IOW ('i',14, struct ifreq)       /* set p-p address */
  65. #define    SIOCGIFDSTADDR    _IOWR('i',34, struct ifreq)       /* get p-p address */
  66. #define    SIOCSIFFLAGS    _IOW ('i',16, struct ifreq)       /* set ifnet flags */
  67. #define    SIOCGIFFLAGS    _IOWR('i',17, struct ifreq)       /* get ifnet flags */
  68. #define    SIOCGIFBRDADDR    _IOWR('i',35, struct ifreq)    /* get broadcast addr */
  69. #define    SIOCSIFBRDADDR    _IOW ('i',19, struct ifreq)    /* set broadcast addr */
  70. #define    SIOCGIFCONF    _IOWR('i',36, struct ifconf)       /* get ifnet list */
  71. #define    SIOCGIFNETMASK    _IOWR('i',37, struct ifreq)     /* get net addr mask */
  72. #define    SIOCSIFNETMASK    _IOW ('i',22, struct ifreq)     /* set net addr mask */
  73. #define    SIOCGIFMETRIC    _IOWR('i',23, struct ifreq)         /* get IF metric */
  74. #define    SIOCSIFMETRIC    _IOW ('i',24, struct ifreq)         /* set IF metric */
  75. #define    SIOCDIFADDR    _IOW ('i',25, struct ifreq)        /* delete IF addr */
  76. #define    SIOCAIFADDR    _IOW ('i',26, struct ifaliasreq) /* add/chg IF alias */
  77.  
  78. #define    SIOCSARP    _IOW('I', 30, struct arpreq)        /* set arp entry */
  79. #define    SIOCGARP    _IOWR('I',38, struct arpreq)        /* get arp entry */
  80. #define    SIOCDARP    _IOW('I', 32, struct arpreq)     /* delete arp entry */
  81.  
  82. /*
  83.  * Private extensions to the BSD44 ioctl interface) 
  84.  */
  85. #define SIOCGARPT       _IOWR('I',66, struct arptabreq)     /* get arp table */
  86.  
  87. #endif /* !SYS_IOCTL_H */
  88.